package atomic

import "sync/atomic"

func main() {
	var a int32 = 12

	//原子读   保证数据在缓存、内存等地方的值是保持一致的
	a = atomic.LoadInt32(&a)
	println(a)

	//原子写 即便别的goroutine在别的CPU上,也可以看到修改后的值
	atomic.StoreInt32(&a, 32)

	//原子增,返回增值后的结果
	newA := atomic.AddInt32(&a, 1)
	println(newA)

	//CAS操作
	//判断a的值并执行改制操作
	// a == [old] ? a == new (return true) : (return false)
	atomic.CompareAndSwapInt32(&a, 34, 11)
}
